package baiqitun.stupro.common.service;

import baiqitun.stupro.common.exception.support.ExistedException;
import baiqitun.stupro.common.exception.support.NotFoundException;

/**
 * 实体检查器
 * @author kedaji
 * @param <T> 实体类
 */
public interface EntityChecker<T> {
    /**
     * 检查指定id的实体是否存在，不存在则抛出异常
     * @param id 主键
     * @param e 异常信息
     * @throws NotFoundException 数据未找到异常
     */
    void checkNotFound(String id, NotFoundException e);

    /**
     * 检查指定id的实体是否存在，存在则抛出异常
     * @param id 主键
     * @param e 异常信息
     * @throws ExistedException 数据已存在/数据重复
     */
    void checkExisted(String id, ExistedException e);

    /**
     * 获取存在的实体，不存在则抛出异常
     * @param id 主键
     * @param e 异常信息
     * @return 实体
     * @throws NotFoundException 数据未找到异常
     */
    T getExistedEntity(String id, NotFoundException e);
}
